#pragma once
/** \brief Bit hanterar databitar 0 och 1
*  Funktioner finns f&ouml;r de mest anv&auml;nda logiska operationern och f&ouml;r en adderare
*/
class Bit
{
public:

	Bit()
	{
	}

	~Bit()
	{
	}

	//Returnerar '1' om a '1' och b '1'
	char and(char a, char b)
	{
		if (a == '1' && b == '1')
			return '1';
		else
			return '0';
	}

	char or(char a, char b)
	{
		if (a == '1' || b == '1')
			return '1';
		else
			return '0';
	}

	char xor(char a, char b)
	{
		if (a == b)
			return '0';
		else
			return '1';
	}

	char not(char a)
	{
		if (a == '1')
			return '0';
		else
			return '1';
	}

	char nand(char a, char b)
	{
		return not(and(a, b));
	}

	char nor(char a, char b)
	{
		return not(or(a,b));
	}

	void add(char a, char b, char ci, char &sum, char &cu)
	{
		char n1, n2, n3, n4;

		n1 = xor(a, b);
		n2 = or(a, b);
		n3 = and(ci, n2);
		n4 = and(a, b);
		cu = or(n3, n4);
		sum = xor(n1, ci);
	}
};

